昨天介紹完數字 今天來談談 字串吧
字串(string)
使用方法
在 Ruby 要建立字串,可以這樣寫:
name = '魯蛇' #等號是指定給的意思
cat = "貓貓"
這樣輸入name的話 就會得到 ‘魯蛇’ 輸入cat會得到 ‘貓貓’,等等!!有注意到引號嗎?
單引號(Single Quote)或雙引號(Double Quote)
單引號跟雙引號做出來的字串本質上沒有差別,最主要的差別就是雙引號的字串可以處理字串安插,但單引號字串則不會處理。
字串安插(String Interpolation)
字串可以使用加號來進行組合、串接,像這樣:
name = "葉問"
number = 10
puts "你好! 我是" + name
#=> 你好! 我是 葉問
puts "我是" + name + "我要打" + number + "個"
#=> 會顯示錯誤 因為字串跟數字沒辦法相加 所以怎麼辦呢?
puts "我是" + name + "我要打" + number.to_s + "個"
#=> 我是葉問 我要打10個
字串跟數字無法做相加,上面的.to_s 是把數字轉換字串(string),也可以用另一種方式
name = "葉問"
number = 10
puts "我是 #{name} 我要打 #{number} 個"
#=> 我是葉問 我要打10個
記得剛剛前面講什麼嗎 單引號不會處理字串安插 所以上面的例子如果換成單引號的話 他會印出
#=>我是 #{name} 我要打 #{number} 個
稍微要注意一下
蛤? 你說你想要在雙引號裡放雙引號,或是單引號裡放單引號 怎麼做。為了可以正常呈現字串,需要使用反斜線來跳脫(escape)這個引號,告訴 Ruby 說「這是一個普通的引號,不是用來包字串的那個引號喔」
puts "我說\"雙引號需要使用反斜線來處理!\""
# => 印出「我說"雙引號需要使用反斜線來處理!"」
你覺得這樣引號包引號會看得眼花嗎 ruby也有提供另外一種方式,分別是 %Q 跟 %q
name = "鋼鐵人"
puts %Q(你好,#{name}) # 跟雙引號一樣,可以使用字串安插
# => 印出「你好,鋼鐵人」
puts %Q(你好,鋼鐵人"'"'"'"'"''"'"'") # 要放幾個引號都可以
# => 印出「你好,鋼鐵人"'"'"'"'"''"'"'"」
puts %q(你好,#{name}) # 跟單引號一樣,不會處理字串安插
# => 印出「你好,#{name}」
計算字串長度
puts "love you 3000 times".length
#=>19(空格也算喔)
字串大小寫轉換
使用 downcase 方法可讓字母全部變小寫、使用 upcase 方法可讓方法全部變大寫,swapcase 則是讓大小寫互相轉換:
puts "abc".upcase
#=> ABC
puts "ABC".downcase
#=> abc
檢查是否為空字串
使用 .empty?
puts "".empty?
#=>true
puts " ".empty?
#=>false #空白字元(space)不算是空字串
想要知道某個字母在字串中共出現幾次?
words = 'adffddddaacgrgretr'
puts words.count("d")
#=>5
怎麼更改一段句子裡面的字?
puts "PHP is good, and I love PHP".sub(/PHP/, "Ruby")
# sub 只會換掉最先遇到的那個字串
# => 印出「Ruby is good, and I love PHP」
puts "PHP is good, and I love PHP".gsub(/PHP/, "Ruby")
# gsub 會換掉全部符合的字串
# => 印出「Ruby is good, and I love Ruby」